﻿package
{
	// ======================================================================= 
	import flash.utils.Dictionary;
	import flash.utils.Proxy;
	import flash.utils.flash_proxy;
	// ======================================================================= 

	public class Recursos extends Proxy
	{
		// ==================================================================== 
		static private var _instancia:Recursos = new Recursos()
		static private var recursos:Dictionary

		[Embed(source='graficos.swf', symbol='MenuPrincipal')]
		private var MenuPrincipal:Class

		[Embed(source='graficos.swf', symbol='Mundo11')]
		private var Mundo11:Class

		[Embed(source='graficos.swf', symbol='BloquePregunta')]
		private var BloquePregunta:Class

		[Embed(source='graficos.swf', symbol='MarioChico')]
		private var MarioChico:Class
		// ==================================================================== 

		// ==================================================================== 
		// CONSTRUCTOR
		// ==================================================================== 

		// -------------------------------------------------------------------- 
		public function Recursos()
		{
			if (instancia)
				throw new Error('No se puede instanciar Recursos')
			recursos = new Dictionary()
		}

		// ==================================================================== 
		// PROPERTIES
		// ==================================================================== 

		// -------------------------------------------------------------------- 
		static public function get instancia():Recursos { return _instancia }

		// ==================================================================== 
		// FUNCIONES
		// ==================================================================== 

		// -------------------------------------------------------------------- 
		override flash_proxy function setProperty(nombre:*, recurso:*):void
		{
			if (recurso == null)
				throw new Error('El recurso es nulo')
			recursos[nombre] = recurso
		}
		// -------------------------------------------------------------------- 
		override flash_proxy function getProperty(nombre:*):*
		{
			if (!recursos.hasOwnProperty(nombre))
				throw new Error('El recurso '+nombre+' no existe')
			return recursos[nombre]
		}
		// -------------------------------------------------------------------- 
		override flash_proxy function deleteProperty(nombre:*):Boolean
		{
			if (!recursos.hasOwnProperty(nombre))
				throw new Error('El recurso '+nombre+' no existe')
			delete recursos[nombre]
			return true
		}
		// -------------------------------------------------------------------- 
		override flash_proxy function hasProperty(nombre:*):Boolean
		{
			return recursos.hasOwnProperty(nombre)
		}
		// -------------------------------------------------------------------- 
		static public function inicializar():void
		{
			recursos['MenuPrincipal'] = instancia.MenuPrincipal
			recursos['Mundo11'] = instancia.Mundo11
			recursos['BloquePregunta'] = instancia.BloquePregunta
			recursos['MarioChico'] = instancia.MarioChico
		}
	}
}
